前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

本节课主要关注服务端开发相关知识,这主要是为接下来的项目篇做准备。

Nuxt 是全栈框架,给我们准备了丰富的服务端开发特性,旨在让大家能够通过一套方案就能完成全栈开发任务。但是有不少小伙伴是纯前端出身,对服务端一些知识有欠缺,例如数据库、接口设计开发等不是很熟悉,所以,我们本节课计划完成如下学习任务:

  • 掌握 MySQL 数据库开发和设计基础;
  • 掌握基于 APIFox 的接口设计流程和方法;
  • 掌握 Node.js ORM 方案 Prisma。

下面,我们先从数据库环境准备开始,将会包括如下内容:

  • 数据库分类和选择;
  • 安装数据库和管理工具。

# 数据库分类和选择

在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库:

  • 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。

  • NoSQL,泛指非关系型的数据库。随着互联网 Web2.0 网站的兴起,传统的关系数据库在应付 Web2.0 网站,特别是超大规模和高并发的 SNS 类型的 Web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题。

    而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL 数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是作为对传统关系型数据库的一个有效的补充。

这两类数据库的代表就是 MySQL 和 MongoDB,那么如何做选择?

作为文档数据库,由于 MongoDB 并不限制用户存储数据的体量和类型,因此适合大数据的应用环境。这对基于云的服务特别有利。

而得益于 MongoDB 的水平可扩展能力,以及与云服务的敏捷性结合,它不但能够减少开发者的工作量,简化业务与项目的扩展流程,还能够提供高可用性和数据的快速恢复。

不过,MongoDB 在数据可靠性、一致性以及安全性等方面,不如 MySQL。此外,当应用程序需要提供多行事务(比如会计和银行系统)时,以 MySQL 为首的关系型数据库提供了高事务处理率。与 MySQL 专注于提供事务的 ACID 和安全性不同的是,MongoDB 更专注于提供高插入率。

因此,我强烈建议大家将 MySQL 用于具有固定数据模式,且不打算在数据的多样性方面进行扩展的项目。因为在确保数据完整性和可靠性的同时,MySQL 不但方便维护,而且成本较低。

相反,MongoDB 是那些正在成长,但数据架构并不固定的业务或项目的最合适选择。因为它允许开发者在无需任何结构的情况下,自由地更新、检索和存储文档,因此它通常适用于内容管理、物联网处理,以及实时分析等项目。

# 安装数据库和管理工具

利用 docker 安装数据库和管理工具是最简单快捷的方式,而且还可以以同样的方式在服务器上安装。因此我这里用 docker 方式搭建 MySQL 开发环境。

# 安装 docker

首先去 官网下载并安装 Docker Desktop,下载适合自己的版本,比如我下载的是 Mac 版:

img

启动 Docker Desktop:

img

# 通过 docker-compose 安装 MySQL 和 Adminer

Docker 安装好之后,就可以找到合适的镜像安装所需软件,我们这里准备安装 MySQL 数据库和管理端 Adminer。

首先,我们在项目根目录下创建一个 docker-compose.yml 文件,并粘贴如下内容:

yaml
复制代码version: '3.7'
services:
  mysql_db_container:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword  # root账号密码
    ports:
      - 3306:3306
    volumes:
      - mysql_db_data_container:/var/lib/mysql
  adminer_container:
    image: adminer:latest
    environment:
      ADMINER_DEFAULT_SERVER: mysql_db_container
    ports:
      - 8080:8080

volumes:
  mysql_db_data_container:
fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏